package com.qf.service.impl;

import com.qf.dao.UserDao;
import com.qf.dao.impl.UserDaoImpl;
import com.qf.domain.User;
import com.qf.service.UserService;
import com.qf.utils.EmailUtils;
import com.qf.utils.MD5Utils;
import jdk.nashorn.internal.ir.CallNode;

import java.util.List;

public class UserServiceImpl implements UserService {
    private UserDao userDao = new UserDaoImpl();
    @Override
    public boolean checkUserName(String username) {
        User user = userDao.selectByUserName(username);
        if (user != null) {
             return true;//用户已存在1不可注册
        }
        return false;//false 用户不存在0可以注册
    }

    @Override
    public void register(User user) {
        //密码加密
        user.setPassword(MD5Utils.md5(user.getPassword()));
        userDao.insert(user);
        //注册时候发送邮件***
        EmailUtils.sendEmail(user);
    }

    @Override
    public void active(String email, String code) {
        int result = userDao.updateFlag(email,code);
    }

    @Override
    public User login(String username, String password) {
        //加密
        password = MD5Utils.md5(password);
        //查找用户
        User user = userDao.selectByUserName(username);
        //判断用户是否存在
        if (user == null) {
            throw new RuntimeException("用户名不存在");
        }
        //比对密码
        if(!user.getPassword().equalsIgnoreCase(password)){  //user.getPassword() 数据库带回来的用户的密码，与前端输入的密码
            throw new RuntimeException("密码错误");//这样就不用
        }
        //是否激活
        if(user.getFlag()!=1){
            throw new RuntimeException("账户未激活或激活已过期");
        }
        return user;
    }

    @Override
    public User adminLogin(String username, String password) {
        //查找用户
        User user = userDao.selectByUserName(username);
        //判断用户是否存在
        if (user == null) {
            throw new RuntimeException("用户名不存在");
        }
        //比对密码
        if(!user.getPassword().equalsIgnoreCase(password)){  //user.getPassword() 数据库带回来的用户的密码，与前端输入的密码
            throw new RuntimeException("密码错误");//这样就不用
        }
        //是否激活
        if(user.getFlag()!=1){
            throw new RuntimeException("账户未激活或激活已过期");
        }
        //在这加一个角色的？  role！=0您不是管理员
        if(user.getRole()!=0){
            throw new RuntimeException("您不是管理员，请勿从此处登录");
        }
        return user;
    }
    @Override
    public List<User> slectAll() {
        return userDao.selectAll();
    }

    @Override
    public void deleteById(String uid) {
        userDao.deleteById(uid);
    }

    @Override
    public List<User> selectByUAG(StringBuilder where1,List<String> I)  {
        return userDao.selectByUAG(where1,I);
    }
}
